// 新版本
// url => node内置模块 => 可以对url地址数据进行解析(解析之后的数据类似location )
var url = require("url");
console.log(url);

var { URL, URLSearchParams } = url;

// 构造函数URL  => URL解析

var str = "http://huaishuanglingzhi.com:8080/index.html?name=huaishuang&age=18#one";

var obj = new URL(str);
console.log(obj);

var params = obj.searchParams;  // 获取参数数据对象 (new URLSearchParams的实例化对象)

// 对应键名获取数据 
// console.log(params.get("name"));
// console.log(params.get("age"));


// 构造函数 URLSearchParams  => 参数数据解析
// new URLSearchParams(string|obj)   => 将传入的参数数据或对象 => 解析为参数对象

// 拓展方法(原型对象的方法 => 所有的实例化对象均可使用)
// get(key)         对应键名获取数据
// getAll(key)      对应键名获取所有数据
// set(key,val)  对应键名设置数据(没有就新增 => 有就修改)
// append(key,val) 对应键名追加数据 (没有就新增,有就追加)
// delete           对应键名删除数据
// has(key)          判断是否存在某个键名

// forEach(function(val,key){})  遍历
// toString()         将参数对象转化为 参数数据队列

var str = "user=a123123&pwd=123123&email=qweqwe@qq.com&phone=17386141516";
var params = new URLSearchParams(str);
console.log(params);

var data = {
    user: 'a123123',
    pwd: '123123',
    email: 'qweqwe@qq.com',
    phone: '17386141516'
}
var params = new URLSearchParams(data);
console.log(params);



console.log(params.get("user"));
console.log(params.get("pwd"));
console.log(params.get("phone"));
console.log(params.get("email"));

params.set("user", "bbb123123");
params.set("height", "174cm");

params.append("hobby", "sing");
params.append("hobby", "dance");

// console.log(params.getAll("hobby"));

params.delete("hobby");
params.delete("height");

console.log(params.has("user"));
console.log(params.has("pwd"));
console.log(params.has("phone"));

console.log(params.toString());

// params.forEach(function (val, key) {
//     console.log(key, val);
// })

// console.log(params);